<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<body>
<script>
'use strict';

promise_test(async t => {
  try {
    await sharedStorage.set('a'.repeat(2621441), 'b');
  } catch (e) {
    assert_equals(e.name, 'DataError');
    return;
  }
  assert_unreached("did not reject");
}, 'sharedStorage.set with key length too big');

promise_test(async t => {
  try {
    await sharedStorage.set('a', 'b'.repeat(2621441));
  } catch (e) {
    assert_equals(e.name, 'DataError');
    return;
  }
  assert_unreached("did not reject");
}, 'sharedStorage.set with value length too big');

promise_test(() => {
  return sharedStorage.set('a'.repeat(2621440), '').then(() => {
    // Clean up.
    sharedStorage.delete('a'.repeat(2621440));
  });
}, 'sharedStorage.set with max allowed key length');

promise_test(() => {
  return sharedStorage.set('a', 'b'.repeat(2621439)).then(() => {
    // Clean up.
    sharedStorage.delete('a');
  });
}, 'sharedStorage.set with max allowed value length');

</script>
</body>
